package object;

/**
 * Object类的演示 一个类默认继承Object类
 */
public class ObjectDemo {
    public static void main(String[] args) {

        /*
    String s1 = new String("hello");
    String s2 = new String("hello");
    //String类重写了equals（）来比较字符串内容是否相同
    System.out.println(s1.equals(s2));//true

    StringBuilder builder1 = new StringBuilder("hello");
    StringBuilder builder2 = new StringBuilder("hello");
    //StringBuilder类则没有重写equals类，调用的还是Object类的equals（）比较
    System.out.println(builder1.equals(builder2));//false

         */
        /*
        调用Object类的equals（），内部还是在使用==比较地址，没有参考意义
        若想比较对象的属性是否相同，我们认为Object类的equals（）并不能满足需求
        因此需要重写equals（）
         */
       /*
        Point p1 = new Point(100,200);
        Point p2 = new Point(100,200);
        System.out.println(p1==p2);//false 比较的是地址
        System.out.println(p1.equals(p2));//true
        */
        /*
        输出引用变量时默认调用Object类的toString（）方法
        该**方法返回的字符串格式为：类的全称@hashcode值
        但通常这个返回结果对我们的开发没有意义的
        我们真正想输出的是对象的属性值
        我们认为Object类的toString（）并不能满足要求
        因此我们常常重写toString（）来返回具体的属性值

        Point p = new Point(100,200);
        System.out.println(p);//object.Point@7d4991ad
        System.out.println(p.toString());//同上

        String s = "hello";//String默认自动重写toString（）
        System.out.println(s.toString());//hello
        StringBuilder sb = new StringBuilder("hello world");//StringBuilder类同上
        System.out.println(sb);//hello world */
    }
}
